/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Emprestimos;

/**
 *
 * @author Stefano
 */
public class Emprestimo {
    private double valorEmprestimo;
    private double valorPrestacao;
    private double valorTotalEmprestimo;
    private int numeroPrestacoes;

    public int getNumeroPrestacoes() {
        return numeroPrestacoes;
    }

    public void setNumeroPrestacoes(int numeroPrestacoes) {
        this.numeroPrestacoes = numeroPrestacoes;
    }

    public double getValorEmprestimo() {
        return valorEmprestimo;
    }

    public void setValorEmprestimo(double valorEmprestimo) {
        this.valorEmprestimo = valorEmprestimo;
    }

    public double getValorPrestacao() { 
        return valorPrestacao;
    }

    public void setValorPrestacao(double valorPrestacao) {
        this.valorPrestacao = valorPrestacao;
    }

    public double getValorTotalEmprestimo() {
        return valorTotalEmprestimo;
    }

    public void setValorTotalEmprestimo(double valorTotalEmprestimo) {
        this.valorTotalEmprestimo = valorTotalEmprestimo;
    }
    
    /* Função que faz a validaçao do CPF, quanto a existencia dele e se o empregado do cpf nao esta desligado*/
    public boolean validaCPF(String cpf){
        try{
            return true;
        }catch(Exception e){
            System.out.println("CPF invalido");
        }
        return false;
    }
    /*Função que calcula o limite do emprestimo do funcionario*/
    public double calculaLimiteEmprestimo(String cpf){
        double limite = 0;
        
        return limite;
    }
    /*Verifica se o numero de prestações é maior que Zero e menor que 25*/
    public boolean validaPrestacoes(int prestacoes){
        try{
            if ((prestacoes>0)&&(prestacoes<25)){
                return true;
            }
        }catch(Exception e)
        {
            System.out.println("Número de prestações inválido");
    }   
    return false;
    }
    
    public void calculaPrestacao(double valorEmprestimo, int prestacoes, double limite) throws Exception {
        double taxa =0;
                
        if ((prestacoes>0)&&(prestacoes<4)){
            taxa=0.05;
        }          
        if ((prestacoes>3)&&(prestacoes<11)){
            taxa=0.065;
        }
        if ((prestacoes>9)&&(prestacoes<16)){
            taxa=0.08;
        }
        if ((prestacoes>15)&&(prestacoes<25)){
            taxa=0.1;
        }
        double CF = taxa/(1-(1/(Math.pow((1+taxa),prestacoes))));
        
        this.valorPrestacao = valorEmprestimo * CF;
        this.valorTotalEmprestimo = this.valorPrestacao + prestacoes;
          
    }
    
    public Emprestimo (String cpf, double emprestimo, int prestacoes){ 
        try{
             if ((validaPrestacoes(prestacoes))&&(validaCPF(cpf))&&(emprestimo <= calculaLimiteEmprestimo(cpf))){
                 double limite =0;
                 
                 this.valorEmprestimo = emprestimo;
                 this.numeroPrestacoes = prestacoes;
                 
                 calculaPrestacao(emprestimo, prestacoes, limite);
                 
                 System.out.println("Nome:" );
                 System.out.println("Valor do Emprestimo:"+ getValorEmprestimo());
                 System.out.println("Valor da Prestacao:"+ getValorPrestacao());
                 System.out.println("Total a Pagar:"+ getValorTotalEmprestimo());
                 
             }
        }catch(Exception e){
            System.out.println("Limite Insuficiente");
        }
        
        
    }

    
}
